/* Пример программы для доступа к PCF8563 */

/* Микроконтроллер  AT90S2313, шина I2C PCF8563 подключена к PORTD.
   Для сигнала sda используем 0 бит порта, 
   для scl - 1 бит порта (рис. 363) */

#include <90s2313.h> 	// подключаем  заголовочный файл используемого 
					// микроконтроллера AVR

/* Перед подключением файла pcf8563.h, объявим порт, используемый 
   для подключения шины I2C и биты порта, используемые для 
   сигналов sda и scl */

/* Шина I2C подключена к PORTD микроконтроллера AT90S2313 
   Адрес порта находим в файле 90s2313.h в строке: sfrb PORTD=0x12; */
#asm 
.equ __i2c_port=0x12 
.equ __sda_bit=0 
.equ __scl_bit=1 
#endasm 

/* Теперь можно подключать функции часов реального времени PCF8563 */ 
#include <pcf8563.h>

/* Основная функция программы */ 

void main(void) 
{ 
		unsigned char test;	// Объявляем переменную test для 
						// проверки правильности значений
		unsigned char hour,minute,second; 	// Объявляем переменные для 
								// хранения значений часов, 
// минут и секунд
		unsigned char date, month, year; 	// Объявляем переменные для 
								// хранения значений даты, 
// месяца и года

		/* инициализируем шину I2C */ 
		i2c_init();

		/* инициализируем Часы Реального Времени PCF8563, 
   	   разрешаем прерывание Будильника (Alarm),
   	   частота на выходе CLKOUT = 32768 Гц,
   	   запрещаем обратный счет Таймера */ 
		rtc_init(RTC_AIE_ON,RTC_CLKOUT_32768,RTC_TIMER_OFF);

		...

		test=rtc_get_time(&hour,&minute,&second); // читаем время из RTC
		
		/* Если test=1, то в переменных hour,minute,second содержатся
         правильные текущие значения часов, минут и секунд */
		...

		test=rtc_get_time(&date,&month,&year); // читаем дату из RTC
		
		/* Если test=1, то в переменных date, month, year содержатся
         правильные текущие значения даты, месяца и года */
		... 					// далее в программе можно использовать 
							// текущее значение времени и даты
}
